
#include <stdio.h>
/**
 * 从顺序表中删除具有最小值的元素（假设唯一），并由函数返回被删元素的值
 * 空出的位置由最后一个元素填补，若顺序表为空则显示出错信息并退出运行
 * @return
 */
#include <stdlib.h>
#define MAXSIZE 100

typedef struct {
    int data[MAXSIZE];
    int length;
} SqList;

int Del_Min(SqList *L, int *value) {
    if (L->length == 0) {
        printf("err");
    }
    *value = L->data[0];
    int pos = 0;
    for (int i = 1; i < L->length; i++) {
        if (L->data[i] < *value) {
            *value = L->data[i];
            pos = i;
        }
    }
    L->data[pos] = L->data[L->length - 1];
    L->length--;
    return *value;
}

int main() {
    SqList *L;
    int i;
    int value;
    L = (SqList *) malloc(sizeof(SqList));
    printf("请输入表元素个数：");
    scanf("%d", &L->length);
    printf("请输入元素值：");
    for (i = 0; i < L->length; i++) {
        scanf("%d", &L->data[i]);
    }
    printf("删除前：");
    for (i = 0; i < L->length; i++) {
        printf("%d ", L->data[i]);
    }
    value = Del_Min(L, &value);
    printf("最小元素为：%d\n", value);
    printf("删除后且最后一个元素填补空出的原最小值元素的位置：");
    for (i = 0; i < L->length; i++) {
        printf("%d ", L->data[i]);
    }
    printf("\n");
    return 0;
}
